The problem of compositing graphic objects using limited processing resources is known within the field of computer graphics. Performing complex compositing operations on an embedded device (such as a mobile phone, portable media player or digital camera) requires expensive central processing unit (CPU) and memory hardware resources. Equipping embedded devices with such hardware increases overall device cost. Furthermore, performing complex compositing operations reduces battery life in portable devices. In the past, these difficulties have prohibited the use of complex compositing operations on embedded devices. Consequently, embedded device graphical user-interfaces tend to be unappealing in nature and generally lacking complex compositing. By contrast, performing complex compositing operations on computer devices with comparatively unlimited resources (eg. notebook and desktop computers) is commonplace.
As embedded devices become more feature rich, there is a clear need for higher quality graphical user interfaces. Improving aesthetic quality and responsiveness of a graphical user interface improves the overall usability and user experience that such a device offers.
Applying a single opacity to a group of graphic objects is a compositing feature that user interface (UI) designers desire for use in an embedded device user interface. This feature has long been possible in desktop personal computer (PC) user interfaces. However, when using existing methods, providing this feature in embedded devices is cost prohibitive.
One conventional method of applying group opacity involves recursively compositing grouped graphic objects. Such a method composites each group of graphic objects into a separate compositing buffer. Essentially, this method “flattens” grouped graphic objects so that each group can be processed as if the group were a single graphic object. The disadvantage of this method is that an extra compositing buffer is required for each group of graphic objects. Furthermore, using this method requires extra processing, because the result of each flattened group must be composited with other graphic objects.
Another conventional method of applying group opacity involves determining intersection regions of overlapping graphic objects, and decomposing the graphic objects into fragment graphic objects such that an opacity value can be applied to each fragment graphic object to produce a correct result. This method requires much pre-processing of graphic object data to determine intersection regions. Furthermore, this method does not support graphic objects having a variable opacity.
Still another conventional method of applying group opacity relies on removal of background graphic objects from a partial compositing result. After background objects have been removed, group opacity may be applied. Following application of the group opacity, the result is re-combined with background graphic objects. Such a method requires allocation of additional buffers and much copying between buffers.